package interfaces.graficos;

import java.sql.Date;
import java.util.ArrayList;
import java.util.ResourceBundle;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

import aplicacion.Vista;

/**
 * Clase que rellena los parámetros correspondientes al estado semanal del
 * estado State
 * 
 * @author José María Martín Blázquez
 * 
 */
public class TablaAnual implements Tabla {
	private ArrayList<String> fechas;
	private ArrayList<String> ventas;
	/**
	 * Utilidad de configuracion de los distintos idiomas
	 */
	private ResourceBundle bundle;

	/**
	 * Constructor del estado de los datos anuales
	 * 
	 * @param fecha
	 *            fecha de la que se muestran las ventas del año en curso
	 * @param vista
	 *            la vista de la aplicación
	 */
	public TablaAnual(Date fecha, Vista vista, ResourceBundle bundle) {
		fechas = new ArrayList<String>();
		ventas = new ArrayList<String>();
		this.bundle = bundle;
		obtenFechasYVentas(fecha, vista);
	}

	/**
	 * Obtienen las fechas y las ventas del año de la fecha dada
	 */

	public void obtenFechasYVentas(Date fecha, Vista vista) {
		ArrayList<ArrayList<Object[]>> vectorVentas = vista.getVentas();
		int anio = fecha.getYear() + 1900;

		Date fechaActual = new Date(System.currentTimeMillis());

		for (int i = 0; i < fechaActual.getMonth() + 1; i++) {
			ArrayList<Object[]> ventasMes = vectorVentas.get(i);
			if (vectorVentas != null) {
				String mes = "";
				switch (i) {
				case 0:
					mes = bundle.getString("enero") + " " + anio;
					break;
				case 1:
					mes = bundle.getString("febrero") + " " + anio;
					break;
				case 2:
					mes = bundle.getString("marzo") + " " + anio;
					break;
				case 3:
					mes = bundle.getString("abril") + " " + anio;
					break;
				case 4:
					mes = bundle.getString("mayo") + " " + anio;
					break;
				case 5:
					mes = bundle.getString("junio") + " " + anio;
					break;
				case 6:
					mes = bundle.getString("julio") + " " + anio;
					break;
				case 7:
					mes = bundle.getString("agosto") + " " + anio;
					break;
				case 8:
					mes = bundle.getString("septiembre") + " " + anio;
					break;
				case 9:
					mes = bundle.getString("octubre") + " " + anio;
					break;
				case 10:
					mes = bundle.getString("noviembre") + " " + anio;
					break;
				case 11:
					mes = bundle.getString("diciembre") + " " + anio;
					break;
				}
				fechas.add(mes);
				double total = 0;
				for (int j = 0; j < fechaActual.getDate() - 1; j++) {
					if (ventasMes != null) {
						Object[] ventasDia = ventasMes.get(j);
						double cantidad = (Double) ventasDia[1];
						total += cantidad;
					}
				}
				ventas.add(Double.toString(total));
			}
		}
	}

	/**
	 * Rellena la tabla anual
	 */

	public void rellenaTabla(Table tabla) {
		tabla.removeAll();
		for (int i = 0; i < fechas.size(); i++) {
			TableItem tItem = new TableItem(tabla, SWT.NONE);
			tItem.setText(0, fechas.get(i));
			tItem.setText(1, ventas.get(i));
		}
	}
}
